import request from '@/config/axios'

// 数据源请求参数
export interface DatasourceSaveReqVO {
  id: number  | undefined // ID,示例值(32316)，是否必须：true，数据类型：integer(int64)
  code: string // 数据源编码，是否必须：true，数据类型：string
  name: string // 数据源名称,示例值(李四)，是否必须：true，数据类型：string
  type: number // 数据库类型 1mysql 2oracle 3 sqlserver 4api,示例值(2)，是否必须：true，数据类型：integer(int32)
  driverClass?: string // 驱动，是否必须：false，数据类型：string
  jdbcUrl?: string // 数据库链接url,示例值(https://www.iocoder.cn)，是否必须：false，数据类型：string
  userName?: string // 登录名,示例值(赵六)，是否必须：false，数据类型：string
  password?: string // 密码，是否必须：false，数据类型：string
  apiColumnsPrefix?: string // 属性前缀，是否必须：false，数据类型：string
  apiColumns?: string // api返回列，是否必须：false，数据类型：string
  apiResultType?: string // api返回类型,示例值(2)，是否必须：false，数据类型：string
  apiRequestType?: string // 请求方式,示例值(2)，是否必须：false，数据类型：string
  apiRequestHeader?: string // 接口请求头，是否必须：false，数据类型：string
}

// 数据源表信息请求参数
export interface DatabaseTablesReqVO{
  id: number  | undefined
}

// 基础表构成信息
export interface DatabaseTables{
  name: string  
  value: string 
}

/**
 * 管理后台 - 数据源管理(执行SQL解析) Request VO
 */
export interface ExecSqlReqVO {
  tplSql?: string;      // 模板SQL，是否必须：false，数据类型：string
  tplId?: number;       // 模板ID，是否必须：false，数据类型：integer(int64)
  datasourceId?: number;// 数据源ID，是否必须：false，数据类型：integer(int64)
  sqlType?: number;     // SQL类型（如 1=MySQL/2=Oracle 等），是否必须：false，数据类型：integer(int32)
  inParam?: string;     // 输入参数，是否必须：false，数据类型：string
  outParam?: string;    // 输出参数，是否必须：false，数据类型：string
  sqlParams?: string;   // SQL参数（如 JSON 格式字符串），是否必须：false，数据类型：string
}

// 数据源管理
export const DatasourceApi = {
  //  获得分页数据
  getPage: async (params: any) => {
    return await request.get({ url: `/ctr/datasource/page`, params })
  },
  // 查询
  get: async (id: number) => {
    return await request.get({ url: `/ctr/datasource/get?id=` + id })
  },
  // 新增
  create: async (data: DatasourceSaveReqVO) => {
    return await request.post({
      url: `/ctr/datasource/create`,
      data
    })
  },
  // 修改
  update: async (data: DatasourceSaveReqVO) => {
    return await request.post({
      url: `/ctr/datasource/update`,
      data
    })
  },
  // 删除
  delete: async (id: number) => {
    return await request.get({ url: `/ctr/datasource/delete?id=` + id })
  },
  // 批量删除
  deleteList: async (ids: string) => {
    return await request.get({ url: `/ctr/datasource/delete-list?ids=` + ids })
  },
  // 获取数据库的所有表信息
  getDatabaseTables: async (data: DatabaseTablesReqVO) => {
    return await request.post({
      url: `/ctr/datasource/getDatabaseTables`,
      data
    })
  },
  // 获取数据库的所有表信息
  execSql: async (data: ExecSqlReqVO) => {
    return await request.post({
      url: `/ctr/datasource/execSql`,
      data
    })
  },
  
  
}
